/**
 *****************************************************************************
 * @file
 * @brief
 * @author taoye
 * @version V0.0.1
 * @date 2021/08/24
 ****************************************************************************
 */
#ifndef  _FUNC_PID_PARA_H
#define  _FUNC_PID_PARA_H

#define MAX_PRESS (200000)
#define MIN_PRESS (0)
/* Public defines -----------------------------------------------------------*/
typedef struct
{
    float ActualVal;        // 实际值
    float err;              // 偏差值
    float err_last;         // 上一个偏差值
	float err_last2;        // 上上一个偏差值
    float integral;         // 积分值
	float outval;           // 输出值
	
	float errMax;
	float errMin;
	float deadArea;
}pid_private_t;

typedef struct func_pid func_pid_t;


/* Public Struct  -----------------------------------------------------------*/

struct func_pid
{
    /* ***************Public Parameter  *************** */
    float Kp;
    float Ki;
    float Kd;
    float SetVal;           // 设置值
    float integral_lim;     // 积分上限
	float integral_sep;     // 积分分离百分比
    float outval_lim;       // 输出值最大值

    /* ***************Public Method     *************** */
    float ( *Pos ) (func_pid_t *, float);
	float ( *Inc ) (func_pid_t *, float,float);
	void ( *Clear ) (func_pid_t *);

    /* ***************Private Attributes*************** */
    pid_private_t   private;
};


/* Public enum    -----------------------------------------------------------*/

/* Public Variable  ---------------------------------------------------------*/
//Pointer

//Array

//Const

/* Pubilc function prototypes -----------------------------------------------*/
int Func_Pid_Init( func_pid_t *this );

#endif

